﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

//define定义标识符常量
//#define MAX 1000

//define定义宏
//#define ADD(x, y) ((x)+(y))
//int main()
//{
//	int sum = ADD(2, 3);
//	printf("sum = %d\n", sum);
//
//	sum = 10 * ADD(2, 3);
//	printf("sum = %d\n", sum);
//
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	printf("%p\n", &a); //取出a所占4个字节中第一个字节的地址
//	int *pa = &a;//&取地址操作符
//	//pa就叫：指针变量
//	char ch = 'w';
//	char* pc = &ch;
//
//	return 0;
//}

//1.指针，本质是地址
//2.口头语中，说的指针是指：指针变量


//int main()
//{
//	int a = 10;
//	int* pa = &a; // 取地址操作符
//	*pa = 20; //* 解引用操作
//	printf("%d\n", a);
//	return 0;
//}

//要想知道指针变量有多大？
//指针变量存储的是什么？ - 地址
//地址的存储需要多大空间，指针变量大小就是多大
//32位机器 - 一个地址是32个二进制位，存储需要32个bit位，所以32位机器上，指针变量大小就是4个字节
//64位机器 - 一个地址是64个二进制位，存储需要64个bit位，所以64位机器上，指针变量大小就是8个字节
//int main()
//{
//	printf("%zu\n", sizeof(char*));
//	printf("%zu\n", sizeof(short*));
//	printf("%zu\n", sizeof(int*));
//	printf("%zu\n", sizeof(double*));
//	return 0;
//}

//int main()
//{
//	double d = 3.14;
//	double *pd;
//	pd =  &d;
//	printf("%lf\n", d);
//	return 0;
//}

//struct Stu
//{
//	char name[20];//名字
//	int age;     //年龄
//	char sex[5]; //性别
//	char id[15]; //学号
//};
//int main()
//{
//	//打印结构体信息
//	struct Stu s = { "张三", 20, "男", "20180101" };
//	//结构体变量.结构体成员
//	printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//
//	//结构体指针 -> 结构体成员
//	struct Stu* ps = &s;
//	printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps -> id);
//
//}

//int main()
//{
//	int a = 0;
//	int b = 0;
//	int ret = scanf("%d %d", &a, &b);
//	printf("ret = %d\n", ret);
//	return 0;
//}

i/*nt main()
{
    int ret = printf("Hello world!");
    printf("%d", strlen("Hello world!"));
    printf("\n");
    printf("%d\n", ret);
    return 0;
}*/